home *** CD-ROM | disk | FTP | other *** search
/ MacFormat 1995 August / macformat-027.iso / mac / Shareware City / Developers / Oberon⁄F / Mac / Mod / Strings (.txt) < prev    next >
Encoding:
Oberon Document  |  1994-06-07  |  5.1 KB  |  126 lines  |  [oODC/obnF]

  1. Documents.StdDocumentDesc
  2. Documents.DocumentDesc
  3. Containers.ViewDesc
  4. Views.ViewDesc
  5. Stores.StoreDesc
  6. Documents.ModelDesc
  7. Containers.ModelDesc
  8. Models.ModelDesc
  9. Stores.ElemDesc
  10. TextViews.StdViewDesc
  11. TextViews.ViewDesc
  12. TextModels.StdModelDesc
  13. TextModels.ModelDesc
  14. TextModels.AttributesDesc
  15. Geneva
  16. Geneva
  17. StdStamps.StdViewDesc
  18. Geneva
  19. MODULE MacStrings;
  20. (* cp 
  21.    String conversion between Macintosh and Oberon strings added
  22.    String Manipulation from 'ToolboxUtilities' here
  23.    String Comparison from 'OSUtilities' here
  24.    BCD-Conversion Package here
  25.    Procedure 'Munger' from 'ToolboxUtilities' here
  26.     IMPORT SYSTEM, MacTypes;
  27.     CONST
  28.         CODE = 1; NOSTKCHK = 4;
  29.         D0 = 0; A0 = 8; A1 = 9;
  30.     PROCEDURE [CODE] cmpStringCase 0A4H, 03CH;
  31.     PROCEDURE [CODE] cmpString 0A0H, 03CH;
  32.     PROCEDURE [CODE] cmpStringMarksCase 0A6H, 03CH;
  33.     PROCEDURE [CODE] cmpStringMarks 0A2H, 03CH;
  34.     PROCEDURE [CODE] uprString 0A0H, 054H;
  35.     PROCEDURE [CODE] uprStringMarks 0A2H, 054H;
  36.     PROCEDURE [CODE] Pack7 (selector: INTEGER) 0A9H, 0EEH;
  37.     PROCEDURE [CODE] relStringCase 0A4H, 050H;
  38.     PROCEDURE [CODE] relString 0A0H, 050H;
  39.     PROCEDURE [CODE] relStringMarksCase 0A6H, 050H;
  40.     PROCEDURE [CODE] relStringMarks 0A2H, 050H;
  41.     (** String Conversions Macintosh <=> Oberon **)
  42.     PROCEDURE [NOSTKCHK] SetStr255* (VAR theStr255: MacTypes.Str255; chars: ARRAY OF CHAR);
  43.         VAR i: INTEGER; ch: CHAR;
  44.     BEGIN
  45.         i := 0;
  46.         REPEAT ch := chars[i]; INC(i); theStr255[i] := ch UNTIL (ch = 0X) OR (i = 256);
  47.         theStr255[0] := CHR(i - 1)
  48.     END SetStr255;
  49.     PROCEDURE [NOSTKCHK] GetStr255* (VAR theStr255: MacTypes.Str255; VAR chars: ARRAY OF CHAR);
  50.         VAR n: INTEGER; ch: CHAR;
  51.     BEGIN
  52.         n := ORD(theStr255[0]);
  53.         IF LEN(chars) < n THEN n := SHORT(LEN(chars)) END;
  54.         chars[n] := 0X;
  55.         WHILE n > 0 DO ch := theStr255[n]; DEC(n); chars[n] := ch END
  56.     END GetStr255;
  57.     (** String Manipulation **)
  58.     PROCEDURE [CODE] NewString* (theString: MacTypes.Str255): MacTypes.StringHandle 0A9H, 006H;
  59.     PROCEDURE [CODE] SetString* (h: MacTypes.StringHandle; theString: MacTypes.Str255) 0A9H, 007H;
  60.     PROCEDURE [CODE] GetString* (stringID: INTEGER): MacTypes.StringHandle 0A9H, 0BAH;
  61.     (** String Comparison **)
  62.     PROCEDURE [NOSTKCHK] EqualString* (aStr, bStr: MacTypes.Str255; caseSens, diacSens: BOOLEAN): BOOLEAN;
  63.         VAR b: BOOLEAN;
  64.     BEGIN
  65.         SYSTEM.PUTREG(A0, SYSTEM.ADR(aStr[1]));
  66.         SYSTEM.PUTREG(A1, SYSTEM.ADR(bStr[1]));
  67.         SYSTEM.PUTREG(D0, ORD(aStr[0]) * 10000H + ORD(bStr[0]));
  68.         IF diacSens THEN
  69.             IF caseSens THEN cmpStringCase ELSE cmpString END
  70.         ELSE
  71.             IF caseSens THEN cmpStringMarksCase ELSE cmpStringMarks END
  72.         END;
  73.         SYSTEM.GETREG(D0, b);
  74.         RETURN ~b
  75.     END EqualString;
  76.     PROCEDURE [NOSTKCHK] UprString* (VAR theString: MacTypes.Str255; diacSens: BOOLEAN);
  77.     BEGIN
  78.         SYSTEM.PUTREG(A0, SYSTEM.ADR(theString[1]));
  79.         SYSTEM.PUTREG(D0, LONG(ORD(theString[0])));
  80.         IF diacSens THEN uprString ELSE uprStringMarks END
  81.     END UprString;
  82.     (** Binary-Decimal Conversion Package **)
  83.     PROCEDURE [NOSTKCHK] NumToString* (theNum: LONGINT; VAR theString: MacTypes.Str255);
  84.     BEGIN
  85.         SYSTEM.PUTREG(A0, SYSTEM.ADR(theString));
  86.         SYSTEM.PUTREG(D0, theNum);
  87.         Pack7(0)
  88.     END NumToString;
  89.     PROCEDURE [NOSTKCHK] StringToNum* (theString: MacTypes.Str255; VAR theNum: LONGINT);
  90.     BEGIN
  91.         SYSTEM.PUTREG(A0, SYSTEM.ADR(theString));
  92.         Pack7(1);
  93.         SYSTEM.GETREG(D0, theNum)
  94.     END StringToNum;
  95.     (** Byte Manipulation **)
  96.     PROCEDURE [CODE] Munger* (h: MacTypes.Handle; offset: LONGINT; ptr1: MacTypes.Ptr;
  97.                  len1: LONGINT; ptr2: MacTypes.Ptr; len2: LONGINT): LONGINT 0A9H, 0E0H;
  98.     (** 128K ROM **)
  99.     PROCEDURE [NOSTKCHK] RelString* (VAR aStr, bStr: MacTypes.Str255; caseSens, diacSens: BOOLEAN): INTEGER;
  100.         CONST RelString = 0A050H; Marks = 200H; Case = 400H;
  101.         VAR res: INTEGER;
  102.     BEGIN
  103.         SYSTEM.PUTREG(A0, SYSTEM.ADR(aStr[1]));
  104.         SYSTEM.PUTREG(A1, SYSTEM.ADR(bStr[1]));
  105.         SYSTEM.PUTREG(D0, ORD(aStr[0]) * 10000H + ORD(bStr[0]));
  106.         IF diacSens THEN
  107.             IF caseSens THEN relStringCase ELSE relString END
  108.         ELSE
  109.             IF caseSens THEN relStringMarksCase ELSE relStringMarks END
  110.         END;
  111.         SYSTEM.GETREG(D0, res);
  112.         RETURN res
  113.     END RelString;
  114. END MacStrings.
  115. TextControllers.StdCtrlDesc
  116. TextControllers.ControllerDesc
  117. Containers.ControllerDesc
  118. Controllers.ControllerDesc
  119. TextRulers.StdRulerDesc
  120. TextRulers.RulerDesc
  121. TextRulers.StdStyleDesc
  122. TextRulers.StyleDesc
  123. TextRulers.AttributesDesc
  124. Geneva
  125. Documents.ControllerDesc
  126.